package com.atguigu.gmall.product.api;

import com.atguigu.gmall.model.product.*;
import com.atguigu.gmall.product.service.ManagerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @Author: lx
 * @Time: 10:33
 * @Description:
 *
 *  对外暴露的接口
 *
 *
 */
@RestController
@RequestMapping("/api/product")
public class ProductController {

    @Autowired
    private ManagerService managerService;

    //1:库存的名称  库存的图片   包含spuId 入参：skuId  URL  返回值 图片集合
    @GetMapping("/inner/getSkuInfo/{skuId}")
    public SkuInfo getSkuInfo(@PathVariable(name = "skuId") Long skuId){
        return managerService.getSkuInfo(skuId);
    }
    //2：商品分类 一级 二级 三级  入参：category3_id  URL:随便写  返回值：三级分类名称 不要ID
    @GetMapping("/inner/getCategoryView/{category3id}")
    public BaseCategoryView getCategoryView(@PathVariable(name = "category3id") Long category3id){
        return managerService.getCategoryView(category3id);
    }
    //3：价格  库存的
    @GetMapping("/inner/getPrice/{skuId}")
    public BigDecimal getPrice(@PathVariable(name = "skuId") Long skuId){
        return managerService.getPrice(skuId);
    }

    //4:销售属性集合 入参：库存ID skuId  商品ID spuId  返回值 销售属性集合
    @GetMapping("inner/getSpuSaleAttrListCheckBySku/{skuId}/{spuId}")
    public List<SpuSaleAttr> getSpuSaleAttrListCheckBySku(
            @PathVariable(name = "skuId") Long skuId,
            @PathVariable(name = "spuId") Long spuId
    ){
        return managerService.getSpuSaleAttrListCheckBySku(skuId,spuId);
    }

    //5：点击其他销售属性值的组合，跳转到另外的sku页面
    @GetMapping("/inner/getSkuValueIdsMap/{spuId}")
    public Map<String,String> getSkuValueIdsMap(@PathVariable(name = "spuId") Long spuId){
        return managerService.getSkuValueIdsMap(spuId);
    }


    //查询所有一二三级分类
    @GetMapping("/inner/getCategoryViewList")
    public List<BaseCategoryView> getCategoryViewList(){
        return managerService.getCategoryViewList();
    }



    //根据ID查询品牌
    @GetMapping("/inner/getTrademark/{tmId}")
    public BaseTrademark getTrademark(@PathVariable(name = "tmId")
                                      Long tmId){
        return managerService.getTrademark(tmId);
    }
    //根据SkuID 查询平台属性及值 
    @GetMapping("/inner/getAttrValueList/{skuId}")
    public List<SkuAttrValue> getAttrValueList(@PathVariable(name = "skuId")
                                              Long skuId){
        return managerService.getAttrValueList(skuId);
    }
}
